﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using MM.Entities;
using MM.Business;

namespace MM
{
    public partial class frmHuyPhieuNK : Form
    {
        string _sConn = "";
        string _nguoitao = "";
        string _matau = "";
        List<CHI_TIET_PNH> lstCT = new List<CHI_TIET_PNH>();
        List<CHI_TIET_PNH> lstChon = new List<CHI_TIET_PNH>();
        PHIEU_NHAP_HANG pnhObj = new PHIEU_NHAP_HANG();
        public frmHuyPhieuNK(string sConn)
        {
            InitializeComponent();
            _sConn = sConn;
            _nguoitao = frmDangNhap.objTaiKhoan._soCMND;
            _matau = frmDangNhap.objTau._tenTau2KiTu;
            
            this.cmdGoDuyet.Visible = false;
           
            this.HienthiPHIEU_NHAP_HANG_MAX(_matau);
            this.HienthiCHI_TIET_PNH(this.txtMaPhieuNhapHang.Text.Trim());
            this.InitNgayHuy();
        }

        private void InitNgayHuy()
        {
            try
            {
                if (this.cboNgayHuy.Items.Count > 0)
                    this.cboNgayHuy.Items.Clear();
                
                List<DateTime> arrNgayHuy = new List<DateTime>();
                DateTime? date;
                for (int i = 0; i < lstCT.Count; i++)
                {
                    date = lstCT[i].NgayHuyNhapHang;
                    if (date.HasValue)
                    {
                        if (i == 0 || arrNgayHuy.IndexOf(date.Value) < 0)
                        {
                            arrNgayHuy.Add(date.Value);
                        }
                    }
                }


                this.cboNgayHuy.DataSource = arrNgayHuy;
                this.cboNgayHuy.FormatString = "dd-MM-yyyy";

                if (arrNgayHuy.Count > 0)
                {
                    this.cboNgayHuy.SelectedIndex = 0;
                }
            }
            catch { }
        }

        private void txtMaPhieuYeuCau_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                string sophieuGR = this.txtMaPhieuNhapHang.Text.Trim();
                if (sophieuGR.Length == 10)
                {
                    lstChon.Clear();
                    this.gridControl2.RefreshDataSource();
                    this.HienthiCHI_TIET_PNH(sophieuGR);
                    this.HienthiPHIEU_NHAP_HANG(sophieuGR);
                    this.InitNgayHuy();
                }
            }
        }
        private void HienthiPHIEU_NHAP_HANG_MAX(string matau)
        {
            clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
            List<PHIEU_NHAP_HANG> lst = new List<PHIEU_NHAP_HANG>();
            lst = pnhCtrl.usp_SelectPHIEU_NHAP_HANG_MAX(matau);
            if (lst.Count > 0)
            {
                pnhObj = new PHIEU_NHAP_HANG();
                pnhObj = lst[0];
                
                    this.txtNgayThucHien.Text = lst[0].NgayNhap.Day.ToString() + "/" + lst[0].NgayNhap.Month.ToString() + "/" + lst[0].NgayNhap.Year.ToString();
                    this.txtNguoiThucHien.Text = lst[0].NguoiNhap;
                    this.txtGhiChu.Text = lst[0].GhiChu;
               

                //if (lst[0].NgayExport.Year > 2011)
                if (lst[0].NgayExport.HasValue)
                {
                   // this.txtNgayDuyet.Text = lst[0].NgayExport.Day.ToString() + "/" + lst[0].NgayExport.Month.ToString() + "/" + lst[0].NgayExport.Year.ToString();
                    DateTime dE = (DateTime)lst[0].NgayExport;
                    this.txtNgayDuyet.Text = dE.Day.ToString() + "/" + dE.Month.ToString() + "/" + dE.Year.ToString();
                    this.cmdGoDuyet.Visible = true;
                    this.txtMaPhieuNhapHang.Text = lst[0].MaPhieuNhapHang;
                }
                else
                {
                    this.txtNgayDuyet.Text = "";
                   
                    this.cmdGoDuyet.Visible = false;
                    this.txtMaPhieuNhapHang.Text = lst[0].MaPhieuNhapHang;
                }
            }


        }
        private void HienthiCHI_TIET_PNH(string MaPhieuNhapHang)
        {
            lstCT.Clear();
            lstChon.Clear();
            clsCHI_TIET_PNH ctCtrl = new clsCHI_TIET_PNH(_sConn);
            lstCT = ctCtrl.usp_SelectCHI_TIET_PNH_ByMaPhieuNhapHang(MaPhieuNhapHang);

            lstCT.RemoveAll(delegate(CHI_TIET_PNH x) { return x.TinhTrang == 1; });

            this.gridControl1.DataSource = lstCT;
            this.gridControl1.RefreshDataSource();

            this.gridControl2.DataSource = lstChon;
            this.gridControl2.RefreshDataSource();
        }
        private void HienthiPHIEU_NHAP_HANG(string MaPhieuNhapHang)
        {
            clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
            List<PHIEU_NHAP_HANG> lst = new List<PHIEU_NHAP_HANG>();
            lst = pnhCtrl.usp_SelectPHIEU_NHAP_HANG(MaPhieuNhapHang);
            if (lst.Count > 0)
            {
                pnhObj = new PHIEU_NHAP_HANG();
                pnhObj = lst[0];

                this.txtNgayThucHien.Text = lst[0].NgayNhap.Day.ToString() + "/" + lst[0].NgayNhap.Month.ToString() + "/" + lst[0].NgayNhap.Year.ToString();
                this.txtNguoiThucHien.Text = lst[0].NguoiNhap;
                this.txtGhiChu.Text = lst[0].GhiChu;

                //if (lst[0].NgayExport.Year > 2011)
                if (lst[0].NgayExport.HasValue)
                {
                   // this.txtNgayDuyet.Text = lst[0].NgayExport.Day.ToString() + "/" + lst[0].NgayExport.Month.ToString() + "/" + lst[0].NgayExport.Year.ToString();
                    DateTime dE = (DateTime)lst[0].NgayExport;
                    this.txtNgayDuyet.Text = dE.Day.ToString() + "/" + dE.Month.ToString() + "/" + dE.Year.ToString();
                    
                    this.cmdGoDuyet.Visible = true;
                }
                else
                {
                    this.txtNgayDuyet.Text = "";
                   
                    this.cmdGoDuyet.Visible = false;
                }
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (this.txtGhiChu.Text.Trim() != "")
            {
                string filepath = "";
                FolderBrowserDialog dg = new FolderBrowserDialog();
                dg.ShowDialog();
                if (dg.SelectedPath != "")
                {
                    clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
                    PHIEU_NHAP_HANG obj = new PHIEU_NHAP_HANG();
                    obj.MaPhieuNhapHang = this.txtMaPhieuNhapHang.Text.Trim();
                    obj.NguoiExport = _nguoitao;
                    obj.NgayExport = DateTime.Today;
                    obj.NgayNhap = DateTime.Today;
                    obj.NguoiNhap = _nguoitao;
                    obj.GhiChu = this.txtGhiChu.Text.Trim();
                    
                    if (obj.MaPhieuNhapHang.Length == 10)
                    {
                        int kq = pnhCtrl.usp_UpdatePHIEU_NHAP_HANG_Duyet(obj);
                        if (kq > 0)
                        {
                            // xuat file Csv
                            string y = DateTime.Today.Year.ToString();
                            string m = DateTime.Today.Month.ToString();
                            string d = DateTime.Today.Day.ToString();
                            m = Convert.ToString("0" + m).Substring(m.Length - 1, 2);
                            d = Convert.ToString("0" + d).Substring(d.Length - 1, 2);
                            filepath = dg.SelectedPath + "\\" + obj.MaPhieuNhapHang + "_" + y + m + d + ".csv";
                            // Xuat file Excel PR
                            pnhCtrl.CsvExportPHIEU_NHAP_HANG(obj, lstCT, filepath);

                            // thong bao cho nguoi dung
                            MessageBox.Show("DUYỆT THÀNH CÔNG!" + "\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn");

                            
                        }
                        else
                            MessageBox.Show("DUYỆT KHÔNG THÀNH CÔNG");
                    }
                }
            }
            else
                MessageBox.Show("Bạn phải nhập Diễn giải cho Phiếu hủy nhập kho");
        }

        private void cmdGoDuyet_Click(object sender, EventArgs e)
        {
            if (lstChon.Count == 0)
                return;
            // điều kiện hủy phiếu nhập kho:
            // * số lượng tồn kho đủ với số lg cần hủy nhập
            if (MessageBox.Show("Bạn thật sự muốn Hủy Phiếu nhập kho ?", "CẢNH BÁO", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (this.txtGhiChu.Text.Trim() != "")
                {
                    string filepath = "";
                    clsTHAM_SO tsCtrl = new clsTHAM_SO(_sConn);
                    THAM_SO tsObj = new THAM_SO();
                    tsObj = tsCtrl.SelectTHAM_SO("vHuyPNK");

                    if (tsObj != null && tsObj.DaXoa == 0)
                    {
                        filepath = tsObj.GiaTri;
                    }

                    if (filepath == "")
                    {
                        FolderBrowserDialog dg = new FolderBrowserDialog();
                        dg.ShowDialog();
                        filepath = dg.SelectedPath;
                    }
                    if (filepath != "")                  
                    {

                        clsCHI_TIET_PNH pnhCtrl = new clsCHI_TIET_PNH(_sConn);
                        string maphieuhuynhaphang = "C" + this.txtMaPhieuNhapHang.Text.Trim().Substring(1);
                        for (int i = 0; i < lstChon.Count; i++)
                        {
                            lstChon[i].NgayHuyNhapHang = DateTime.Today;
                            lstChon[i].NgayNhap = DateTime.Today;
                            lstChon[i].NguoiNhap = _nguoitao;
                            lstChon[i].MaPhieuHuyNhapHang = maphieuhuynhaphang;
                        }
                        if (pnhCtrl.usp_UpdateCHI_TIET_PNH_Cancelation(lstChon) > 0)
                        {
                            

                            string y = DateTime.Today.Year.ToString();
                            string m = DateTime.Today.Month.ToString();
                            string d = DateTime.Today.Day.ToString();
                            m = Convert.ToString("0" + m).Substring(m.Length - 1, 2);
                            d = Convert.ToString("0" + d).Substring(d.Length - 1, 2);
                            filepath = filepath + "\\" + maphieuhuynhaphang + "_" + y + m + d + ".csv";

                            clsPHIEU_NHAP_HANG pnh = new clsPHIEU_NHAP_HANG(_sConn);
                            pnh.CsvExportPHIEU_NHAP_HANG_Cancelation(this.txtGhiChu.Text.Trim(), lstChon, filepath);
                            
                            this.HienthiCHI_TIET_PNH(this.txtMaPhieuNhapHang.Text.Trim());
                            this.lblThongBao.Text = "HỦY PHIẾU THÀNH CÔNG!" + "\r\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn";
                            this.InitNgayHuy();
                            this.HienthiCHI_TIET_PNH(this.txtMaPhieuNhapHang.Text.Trim());
                        }
                        else
                            MessageBox.Show("HỦY PHIẾU KHÔNG THÀNH CÔNG");
                    }
                }
                else
                    MessageBox.Show("Bạn phải nhập Diễn giải cho Phiếu hủy nhập kho");
            }
        }

        private void cmdXuatLai_Click(object sender, EventArgs e)
        {
            string filepath = "";
            clsTHAM_SO tsCtrl = new clsTHAM_SO(_sConn);
            THAM_SO tsObj = new THAM_SO();
            tsObj = tsCtrl.SelectTHAM_SO("vHuyPNK");

            if (tsObj != null && tsObj.DaXoa == 0)
            {
                filepath = tsObj.GiaTri;
            }

            if (filepath == "")
            {
                FolderBrowserDialog dg = new FolderBrowserDialog();
                dg.ShowDialog();
                filepath = dg.SelectedPath;
            }
            if (filepath != "")
            {                         
                
                if (pnhObj.MaPhieuNhapHang.Length == 10)
                {
                    // chon xuat file theo ngay huy
                    DateTime? selectedDate;
                    selectedDate = (DateTime?)this.cboNgayHuy.SelectedItem;
                 
                    List<CHI_TIET_PNH> lstXuatlai = new List<CHI_TIET_PNH>();
                    CHI_TIET_PNH oCT;
                    for (int i = 0; i < lstCT.Count; i++)
                    {
                        if (lstCT[i].MaPhieuHuyNhapHang != "")
                        {
                            oCT = new CHI_TIET_PNH();
                            oCT = lstCT[i];
                            if (!selectedDate.HasValue || oCT.NgayHuyNhapHang==selectedDate)
                                lstXuatlai.Add(oCT);
                        }
                    }
                    if (lstXuatlai.Count > 0)
                    {
                        if (this.txtGhiChu.Text != "")
                        {
                           
                            string y = DateTime.Today.Year.ToString();
                            string m = DateTime.Today.Month.ToString();
                            string d = DateTime.Today.Day.ToString();
                            m = Convert.ToString("0" + m).Substring(m.Length - 1, 2);
                            d = Convert.ToString("0" + d).Substring(d.Length - 1, 2);
                            filepath = filepath + "\\" + lstXuatlai[0].MaPhieuHuyNhapHang + "_" + y + m + d + ".csv";

                            clsPHIEU_NHAP_HANG pnh = new clsPHIEU_NHAP_HANG(_sConn);
                            pnh.CsvExportPHIEU_NHAP_HANG_Cancelation(this.txtGhiChu.Text.Trim(), lstXuatlai, filepath);
                            // thong bao cho nguoi dung
                            this.lblThongBao.Text = "XUẤT LẠI PHIẾU THÀNH CÔNG!" + "\r\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn";
                        }
                        else
                            MessageBox.Show("Bạn phải nhập Diễn giải cho Phiếu hủy nhập kho");
                    }                    
                }
            }
        }

        private void lnkChon_Click(object sender, EventArgs e)
        {
            try
            {
                int index = -1;
                index = gridDSVT.FocusedRowHandle;
                CHI_TIET_PNH oPNH = new CHI_TIET_PNH();
                oPNH = lstCT[index];
                if (oPNH.MaPhieuHuyNhapHang != "")
                {
                    MessageBox.Show("VTPT: "+oPNH.MaVTPT+" ĐÃ ĐƯỢC HỦY");
                }
                else
                {
                    lstChon.Add(oPNH);
                    this.gridControl2.RefreshDataSource();
                    lstCT.RemoveAt(index);
                    this.gridControl1.RefreshDataSource();
                }

            }
            catch { }
        }

        private void lnkBoChon_Click(object sender, EventArgs e)
        {
            try
            {
                int index = -1;
                index = gridView1.FocusedRowHandle;
                CHI_TIET_PNH oPNH = new CHI_TIET_PNH();
                oPNH = lstChon[index];               
               
                lstCT.Add(oPNH);
                this.gridControl2.RefreshDataSource();
                lstChon.RemoveAt(index);
                this.gridControl1.RefreshDataSource();
               

            }
            catch { }
        }

        private void frmHuyPhieuNK_Paint(object sender, PaintEventArgs e)
        {
            //Common.PaintGradientColor(Color.LightYellow, Color.LightSkyBlue, System.Drawing.Drawing2D.LinearGradientMode.Vertical, this.Width, this.Height, this);            
        }

        private void label1_Click(object sender, EventArgs e)
        {
            frmTimPhieuNK f = new frmTimPhieuNK(_sConn);
            f.chonPNK += new frmTimPhieuNK.ChonPhieuNhapKho(GetPhieuNhapKho);
            f.Show(this);
        }

        private void GetPhieuNhapKho(object sender, ChonPhieuNKEventArgs e)
        {
            string mapnk = e.MaPhieuNhapKho;
            lstChon.Clear();
            this.gridControl2.RefreshDataSource();
            this.HienthiPHIEU_NHAP_HANG(mapnk);
            this.HienthiCHI_TIET_PNH(mapnk);
            this.InitNgayHuy();
        }

        private void frmHuyPhieuNK_Load(object sender, EventArgs e)
        {
            Common.SetColor(this);
            this.lblThongBao.BackColor = this.BackColor;
        }

        

    }
}